<!DOCTYPE html>
<html lang="ch-CN">
<head>
    <meta charset="UTF-8">
    <title>查询构造函数中实例化对象年龄大于18的人</title>
</head>
<style>
    body {
        width: 100%;
        height: 100vh;
        background-color: wheat;
        font-size: 30px;
        text-decoration: none;
        font-family: "华文楷体";
    }
</style>
<script>

    function Person(name, age, gender) {
        this.name = name
        this.age = age
        this.gender = gender
    }

    // 在构造函数Person的原型上写一个sayName方法
    Person.prototype.sayName = function () {
        return "name:" + this.name + "age:" + this.age + "gender:" + this.gender + "<br>"
    }

    // Person的分类对象实例化
    let Person1 = new Person("小红", 10, "女")
    let Person2 = new Person("小兰", 30, "女")
    let Person3 = new Person("小紫", 26, "男")
    let Person4 = new Person("小花", 16, "男")

    // 将对象装入数组Arr中
    let Arr = [Person1, Person2, Person3, Person4]

    // 构造一个查询年龄大于18的构造函数
    function Found(arr) {
        let newArr = []
        for (let i = 0; i < arr.length; i++) {
            // 查询年龄大于18的构造函数
            if (arr[i].age >= 18) {
                // 向新的数组添加年龄大于18的对象
                newArr.push(arr[i])
            }
        }
        // 将新数组返回
        return newArr
    }
    // 实例化一个result对象
    let result=new Found(Arr)
    /*
        * 遍历输出result数组对象中的每一个对象
        * 调用Person原型上写的sayName方法将对象的属性打印在屏幕上
    */
    for (let i=0;i<result.length;i++){
        console.log(result[i])
        document.write(result[i].sayName())
    }

    // 数组遍历的第二种方法
    // result.forEach(function (value,index,object){
    //     document.write(object[index].sayName())
    //     console.log(object[index])
    //     })
</script>
<body>
</body>
</html>